<?php
/**
 * @version		1.0: controller.php marum56
 * @package		Joomla
 * @subpackage		Obiekty
 */

// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );

jimport('joomla.application.component.controller');

/**
 * Objects Component Controller
 *
 * @package		Joomla
 * @subpackage		Obiekt
 * @since 1.0
 */
class PrzeniesieniaController extends JController
{
	/**
	 * Constructor
	 *
	 * @params	array	Controller configuration array
	 */
	function __construct($config = array())
	{
		parent::__construct($config);
		
		// Register Extra tasks
		$this->registerTask( 'add', 'step_1'  );
		$this->registerTask( 'detals', 'display'  );
	}

	/**
	 * Displays a view
	 */
	function display( )
	{
		switch($this->getTask())
		{
			case 'detals'    :
			{
				JRequest::setVar( 'hidemainmenu', 1 );
				JRequest::setVar( 'layout', 'form'  );
				JRequest::setVar( 'view', 'przeniesienie_detals' );
			} break;
			default	       :
			{
				JRequest::setVar( 'layout', 'default'  );
				JRequest::setVar( 'view', 'przeniesienia' );
			}
		}

		parent::display();
	}

	
	/**
	 * Krok 1
	 */
	function step_1()
	{		
		JRequest::setVar( 'hidemainmenu', 1 );
		JRequest::setVar( 'layout', 'form'  );
		JRequest::setVar( 'view', 'przeniesienie_add' );
		JRequest::setVar( 'step', 1 );
		
		parent::display();	
	}
	

	/**
	 * Krok 2
	 */
	function step_2()
	{
		JRequest::setVar( 'hidemainmenu', 1 );
		JRequest::setVar( 'layout', 'form'  );
		JRequest::setVar( 'view', 'przeniesienie_add' );
		
		$oP =& new msPrzeniesienie_add();
		
		// Odczyt kontroliki z wszystkimi obiektami o nazwie "select_obiektu" z formularza 
		$select_obiektu_gid = $oP->getValue('select_obiektu');
		
		if ($select_obiektu_gid == NULL) 
		{
			// Wycofujemy się do kroku 1
			JRequest::setVar( 'step', 1 );
		}
		else 
		{	
			JRequest::setVar( 'step', '2' );
			
			// Nazwa obiektu wydającego
			$nameObiekt = msMysql::getloadResult('obiekt', 'jos_obiekty', 'gid', $select_obiektu_gid, 'gid'); 	
			$oP->setValue('z_obiektu', $nameObiekt);

			// Nazwa spółki obsługującej obiekt 
			$nameSpolka = $oP->getSpolka($select_obiektu_gid);	
			$oP->setValue('z_obiektu_sp', $nameSpolka);

			$arr = array();			
			$arr = $oP->getKierownik_reg($select_obiektu_gid);
			// Nazwa kierownika regionu
			$whoWydal = $arr['name'];			
			$oP->setValue('whoWydal', $whoWydal);
			// E-mai kierownika regionu
			$whoWydalEmail = $arr['email'];			
			$oP->setValue('whoWydalEmail', $whoWydalEmail);	
			// Username kierownika regionu
			$whoWydalUsername = $arr['username'];			
			$oP->setValue('whoWydalUsername', $whoWydalUsername);	
		}
			
		parent::display();
	}

	/**
	 * Krok 3
	 */
	function step_3()
	{
		JRequest::setVar( 'hidemainmenu', 1 );
		JRequest::setVar( 'layout', 'form'  );
		JRequest::setVar( 'view', 'przeniesienie_add' );
				
		$oP =& new msPrzeniesienie_add();

		// Odczyt kontroliki selekt o nazwie "model" z formularza 		
		$nazwa_modelu = $oP->getValue('model');		
		
		if ($nazwa_modelu == NULL) 
		{
			// Wycofujemy się do kroku 2
			JRequest::setVar( 'step', 2 );
		}
		else 
		{	
			JRequest::setVar( 'step', '3' );		
		}
				
		parent::display();
	}


	/**
	 * Krok 4
	 */
	function step_4()
	{
		JRequest::setVar( 'hidemainmenu', 1 );
		JRequest::setVar( 'layout', 'form'  );
		JRequest::setVar( 'view', 'przeniesienie_add' );

		$oP =& new msPrzeniesienie_add();

		// Kontroliki selekt o nazwie "gid_maszyny" formularza zwraca gid maszyny 		
		$gid_maszyny = $oP->getValue('gid_maszyny');
		
		// Pobierz nri maszyny
		$nri = msMysql::getloadResult('nri', 'jos_maszyny', 'gid', $gid_maszyny, 'gid');
		// Zapisany nri
		$oP->setValue('nri', $nri);
		
		// Pobierz właściciela maszyny
		$wlas_maszyny = msMysql::getloadResult('msw6', 'jos_maszyny_wlas', 'gid', $gid_maszyny, 'gid', true, false);
		// Zapisany msw6
		$oP->setValue('msw6', $wlas_maszyny);	
		
		// Pobierz status przeniesienia dla danej maszyny		
		$status = $oP->getStatusPrzeniesienia( $nri );

		if ( isset($status) && ($status == 0 || $status == 1) )
		{
			global $mainframe;
			if ( $status == 0 ) $mainframe->enqueueMessage('Maszyna o nr: "'.$nri.'" jest zarezerwowana przez inny obiekt.', 'error');
			if ( $status == 1 ) $mainframe->enqueueMessage('Maszyna o nr: "'.$nri.'" nie zakończyła poprzedniej tranzakcji przeniesienia.', 'error');
			JRequest::setVar( 'step', 3 );
		}
		else
		{		
			$dotacja = msMysql::getloadResult('dotacja', 'jos_maszyny_dotacja', 'gid', $gid_maszyny, 'gid', true, false);
			
			if ($dotacja) {
				global $mainframe;
				$mainframe->enqueueMessage('Przeniesienie maszyny o nr: "'.$nri.'"  >>> ZABRONIONE  <<<  aktualna dotacja.', 'error');  
				JRequest::setVar( 'step', 3 );
			}
			else {
				if ($nri == NULL) 
				{
					// Wycofujemy się do kroku 3
					JRequest::setVar( 'step', 3 );
				} 
				else 
				{	
					JRequest::setVar( 'step', '4' );		
				}
			}
		}
				
		parent::display();
	}

	/**
	 * Krok 5
	 */
	function step_5()
	{
		JRequest::setVar( 'hidemainmenu', 1 );
		JRequest::setVar( 'layout', 'form'  );
		JRequest::setVar( 'view', 'przeniesienie_add' );
		
		$oP =& new msPrzeniesienie_add();

		// Odczyt kontroliki selekt o nazwie "select_na_obiekt" z formularza 				
		$select_na_obiekt_gid = $oP->getValue('select_na_obiekt');
		
		if ($select_na_obiekt_gid == NULL) 
		{
			// Wycofujemy się do kroku 4
			JRequest::setVar( 'step', 4 );
		}
		else 
		{	
			JRequest::setVar( 'step', '5' );
			
			// Nazwa obiektu przymujacego
			$nameObiekt = msMysql::getloadResult('obiekt', 'jos_obiekty', 'gid', $select_na_obiekt_gid, 'gid'); 	
			$oP->setValue('na_obiekt', $nameObiekt);
			
			// Nazwa spółki obsługującej obiekt 
			$nameSpolka = $oP->getSpolka($select_na_obiekt_gid);	
			$oP->setValue('na_obiekt_sp', $nameSpolka);
			
			$arr = array();
			$arr = $oP->getKierownik_reg($select_na_obiekt_gid);	
			// Nazwa kierownika regionu
			$whoPrzyjal = $arr['name'];			
			$oP->setValue('whoPrzyjal', $whoPrzyjal);
			// E-mai kierownika regionu
			$whoPrzyjalEmail = $arr['email'];			
			$oP->setValue('whoPrzyjalEmail', $whoPrzyjalEmail);	
			// Username kierownika regionu
			$whoPrzyjalUsername = $arr['username'];			
			$oP->setValue('whoPrzyjalUsername', $whoPrzyjalUsername);	
		}
		
		// Zapis pola: "zm_sp" (zmiana spółki)
		$zm_sp = ( $oP->getValue('z_obiektu_sp') == $oP->getValue('na_obiekt_sp') ) ? 0 : 1;
		// Zapamiętaj zmienną
		$oP->setValue('zm_sp', $zm_sp);
		
		if ( $zm_sp ) {
			JError::raiseNotice( 500, 'Przeniesienie maszyny w ramach dwóch spółek.' ); 
		}

		parent::display();
	}

	/**
	 * Krok 6
	 */
	function step_6()
	{
		// Check for request forgeries
		JRequest::checkToken() or jexit( 'Invalid Token' );		

		global $mainframe;

		/*
		 * Zapisz plik skanu na serwer
		 */
		require_once ('file_skan.php');
		if ( ! msFileScan::saveFile($_POST, 'jos_przeniesienia', 'przeniesienia') ) 
		{
			// Czyścimy zapisy z poprzedniego przeniesienia, jeśli tworzymy nowe w tej samej sesji.
			$_POST['file_name'] = '';
			$_POST['file_path'] = '';
		}

		
		$oP =& new msPrzeniesienie_add();
		
		// Zbindowanie tablicy zawartej w obiekcie na właściwości tego obiektu
		if ( ! $oP->bind($oP->toArray()) )
		{
			$mainframe->enqueueMessage('Nie można zapisać informacji o obiekcie.', 'message');
			$mainframe->enqueueMessage($oP->getError(), 'error');
			return $this->execute('add');
		}
				
		// Kto wydał polecenie
		$me =& JFactory::getUser();
		$oP->whoRegister = $me->get('name');
		
/*		$mainframe->enqueueMessage($oP->z_obiektu, 'message');
		$mainframe->enqueueMessage($oP->z_obiektu_sp, 'message');
		$mainframe->enqueueMessage($oP->whoWydal, 'message');
		$mainframe->enqueueMessage($oP->model, 'message');
		$mainframe->enqueueMessage($oP->nri, 'message');
		$mainframe->enqueueMessage($oP->na_obiekt, 'message');
		$mainframe->enqueueMessage($oP->na_obiekt_sp, 'message');
		$mainframe->enqueueMessage($oP->whoPrzyjal, 'message');
		$mainframe->enqueueMessage($oP->whoRegister, 'message');
		$mainframe->enqueueMessage($oP->zm_sp, 'message');

		$mainframe->enqueueMessage($oP->file_name, 'message');
		$mainframe->enqueueMessage($oP->file_path, 'message');
*/		
		  

		/*
	 	 * Zapisanie danych do bazy i wysłanie e-maila do wydającego maszynę
	 	 */
		if (!$oP->save())
		{
			$mainframe->enqueueMessage('Przeniesienie maszyny nie może być obecnie zralizowane. Proszę spróbuj później.', 'error');
			$mainframe->enqueueMessage($oP->getError(), 'error');
			return $this->execute('index.php?option=com_przeniesienia');
		}

		// Przeniesienie OK
		$msg = 'Przeniesienie zostało przyjęte do realizacji.';
		$this->setRedirect( 'index.php?option=com_przeniesienia&task=detals&cid[]='.$oP->gid, $msg );
	}
	

	/**
	 * Cancels an edit operation
	 */
	function cancel( )
	{
		$this->setRedirect( 'index.php?option=com_przeniesienia' );
	}
}
